home *** CD-ROM | disk | FTP | other *** search
- /*
- A simple example of using NList, NListview and NFloattext in AmigaE
- Written by Piotr Pawlow (PP/UNION)
- */
-
- MODULE 'lib/amiga','utility/tagitem','mui/nlist_mcc','mui/nlistview_mcc',
- 'mui/nfloattext_mcc','muimaster','libraries/mui','libraries/asl','workbench/startup'
-
- DEF app,wi_Master,MUIMasterBase
-
- PROC main()
- DEF signal,opened,filename,rdargs,args:PTR TO LONG
- DEF buf,nlist,filenameobj,retid,nfloattext
- DEF wb:PTR TO WBStartup,filename2,filename2obj,buf2
-
- IF (wb:=wbmessage) THEN CurrentDir(wb.ArgList.Lock)
-
- args:=[0,0]
-
- IF (rdargs:=ReadArgs('NLISTFILE=NF,FLOATTEXTFILE=FF',args,0))=0 THEN Raise('Wrong arguments')
-
- IF args[0] THEN filename:=args[0] ELSE filename:='nlist_example.txt'
- IF args[1] THEN filename2:=args[1] ELSE filename2:='nfloattext_example.txt'
-
- IF (MUIMasterBase:=OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN))=NIL THEN
- Raise('failed to open muimaster.library')
-
- app := ApplicationObject,
- MUIA_Application_Title , 'NList Example',
- MUIA_Application_Version , '$VER: NList Example 1.0 (14.10.96)',
- MUIA_Application_Author , 'Piotr Pawlow (PP/UNION)',
- MUIA_Application_Description, 'Just a little example...',
- MUIA_Application_Base , 'NL_EXAMPLE',
- SubWindow, wi_Master := WindowObject,
- MUIA_Window_ID, "MAIN",
- MUIA_Window_Title, 'NList Example',
- MUIA_Window_ActiveObject,nlist,
- MUIA_Window_Height,MUIV_Window_Height_Visible(80),
- MUIA_Window_Width,MUIV_Window_Width_Visible(80),
- WindowContents, RegisterGroup(['NList','NFloattext',0]),
- Child, VGroup, GroupFrameT('NList class'),
- Child, nlist:=NListviewObject,
- MUIA_CycleChain,MUI_TRUE,
- MUIA_NListview_NList,NListObject,
- MUIA_NList_DragSortable,MUI_TRUE,
- MUIA_NList_ShowDropMarks,MUI_TRUE,
- MUIA_NList_MultiSelect,MUIV_NList_MultiSelect_Default,
- End,
- End,
- Child, HGroup,
- Child, KeyLabel2('File:',"F"),
- Child, PopaslObject,
- MUIA_Popstring_String, filenameobj:=StringObject,
- MUIA_CycleChain,MUI_TRUE,
- MUIA_String_MaxLen,138,
- StringFrame,
- MUIA_ControlChar,"f",
- End,
- MUIA_Popstring_Button, PopButton(MUII_PopFile),
- ASLFR_TitleText, 'Please select a file...',
- ASLFR_RejectIcons,TRUE,
- End,
- End,
- End,
- Child, VGroup, GroupFrameT('NFloattext class'),
- Child, NListviewObject,
- MUIA_CycleChain,MUI_TRUE,
- MUIA_NListview_Horiz_ScrollBar,MUIV_NListview_HSB_None,
- MUIA_NListview_NList,nfloattext:=NFloattextObject,
- MUIA_Floattext_Justify,MUI_TRUE,
- End,
- End,
- Child, HGroup,
- Child, KeyLabel2('File:',"F"),
- Child, PopaslObject,
- MUIA_Popstring_String, filename2obj:=StringObject,
- MUIA_CycleChain,MUI_TRUE,
- MUIA_String_MaxLen,138,
- StringFrame,
- MUIA_ControlChar,"f",
- End,
- MUIA_Popstring_Button, PopButton(MUII_PopFile),
- ASLFR_TitleText, 'Please select a file...',
- ASLFR_RejectIcons,TRUE,
- End,
- End,
- End,
- End,
- End,
- End
-
- IF app=NIL THEN Raise('Failed to create application.')
-
- DoMethodA(wi_Master,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit])
- DoMethodA(filenameobj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOAD"])
- DoMethodA(filename2obj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOD2"])
-
- set(wi_Master,MUIA_Window_Open,MUI_TRUE)
- get(wi_Master,MUIA_Window_Open,&opened)
- IF opened=FALSE THEN Raise('Failed to open window.')
-
- buf2:=loadcontents(filename2)
- set(filename2obj,MUIA_String_Contents,filename2)
- IF buf2 THEN set(nfloattext,MUIA_NFloattext_Text,buf2)
- buf:=loadcontents(filename)
- set(filenameobj,MUIA_String_Contents,filename)
- IF buf THEN DoMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top])
-
- REPEAT
- retid:=DoMethodA(app,[MUIM_Application_NewInput,&signal])
- IF retid="LOAD" THEN buf:=loadnew(buf,nlist,filenameobj)
- IF retid="LOD2" THEN buf2:=loadnew2(buf2,nfloattext,filename2obj)
- IF (signal) THEN Wait(signal)
- UNTIL retid=MUIV_Application_ReturnID_Quit
-
- set(wi_Master,MUIA_Window_Open,FALSE)
-
- EXCEPTDO
- IF rdargs THEN FreeArgs(rdargs)
- IF app THEN MUI_DisposeObject(app)
- IF MUIMasterBase THEN CloseLibrary(MUIMasterBase)
- IF exception THEN WriteF('\s\n',exception)
- ENDPROC
-
- PROC loadcontents(filename)(PTR)
- DEF len,handle,buf:PTR TO CHAR
- len:=FileLength(filename)
- IF handle:=Open(filename,OLDFILE)
- IF (buf:=New(len+1))=0
- info('Not enough memory')
- RETURN 0
- ENDIF
- IF (Read(handle,buf,len)=-1) OR (len<1)
- Close(handle)
- info('Failed to read file %s',[filename])
- RETURN 0
- ENDIF
- Close(handle)
- ELSE
- info('Failed to open file %s',[filename])
- RETURN 0
- ENDIF
- ENDPROC buf
-
- PROC info(text,args=0)(L) IS MUI_RequestA(app,wi_Master,0,0,'*_OK',text,args)
-
- PROC loadnew(buf,nlist,stringobject)(PTR)
- DEF name
- Dispose(buf)
- DoMethodA(nlist,[MUIM_NList_Clear,0])
- get(stringobject,MUIA_String_Contents,&name)
- buf:=loadcontents(name)
- IF buf THEN DoMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top])
- ENDPROC buf
-
- PROC loadnew2(buf,nfloattext,stringobject)(PTR)
- DEF name
- Dispose(buf)
- get(stringobject,MUIA_String_Contents,&name)
- buf:=loadcontents(name)
- set(nfloattext,MUIA_Floattext_Text,buf)
- ENDPROC buf
-